package util

import (
	"crypto/md5"
	"encoding/base64"
	"encoding/hex"
	"encoding/json"
)

// 加密函数
func Md5String(s string) string {
	h := md5.New()
	h.Write([]byte(s))

	return hex.EncodeToString(h.Sum(nil))
}


// Base64 Encode
func Base64Encode(obj interface{}) string {
	jsonBytes, err := json.Marshal(obj)
	if err != nil {
		panic(err)
	}
	return base64.StdEncoding.EncodeToString(jsonBytes)
}

// Base64 EncodeString
func Base64EncodeString(str string) string {
	return base64.StdEncoding.EncodeToString([]byte(str))
}

// Base64 Decode
func Base64Decode(str string, obj interface{}) error {
	jsonBytes, err := base64.StdEncoding.DecodeString(str)
	if err!= nil {
		return err
	}
	return json.Unmarshal(jsonBytes, obj)
}

// Base64 DecodeString
func Base64DecodeString(str string) string {
	jsonBytes, err := base64.StdEncoding.DecodeString(str)
	if err!= nil {
		panic(err)
	}
	return string(jsonBytes)
}
